package java学习.第06章_面向对象编程_基础;

/**
 * ClassName: F_面向对象特征之封装性
 * Package: java学习.第06章_面向对象编程_基础
 * Description:
 *
 * @Author 张蛟龙
 * @Create 2023/3/5 15:07
 * @Version 1.0
 */
public class F_面向对象特征之封装性 {
    /**
     * 像黑匣子
     * 为啥要封装性
     * 随着我们系统越来越复杂，类会越来越多，
     * 那么类之间的访问边界必须把握好，面向对象的开发原则
     * 要遵守：  高内聚，低耦合
     * 高内聚、低耦合是软件工程中的概念，也是UNIX 操作系统设计的经典原则。
     * <p>
     * 内聚： 指一个模块内各个元素彼此结合的紧密程度；
     * 耦合： 指一个软件结构内不同模块之间互连程度的度量。
     * <p>
     * 内聚意味着重用和独立，耦合意味着多米诺效应牵一发动全身。
     * <p>
     * 封装性：把该隐藏的隐藏起来，该暴露的暴露出来 ，
     * 使用权限修饰符可以当这些类的内部成员被调用时，体现可见性的大小
     */
    public static void main(String[] args) {
        Animal f = new Animal();
        f.name = "金蟾";
        //但是腿不能是负数，所以不能直接暴露给别人 所以要进行限制
        f.legs = -4;
        Animal1 f1 = new Animal1();
//        f1.legs = -4;//不能直接调用 因为legs是私有的
        f1.setLegs(-4);//这样就行了  可以对此参数进行方法级别的限制

    }


}

/**
 * 权限修饰符  类内部   同一个包   不同包的子类   同一个工程
 * private   Yes
 * (缺省)     Yes      Yes
 * protected Yes      Yes       Yes
 * public    Yes      Yes       Yes          Yes
 * <p>
 * 修饰类   只能  （缺省）和public
 * 可以修饰    属性，方法，构造器，内部类
 * 修饰类：   缺省，public
 */
class Animal {
    String name;
    int legs;
}

class Animal1 {
    String name;
    private int legs;//私有的，别的类不可调用

    public void setLegs(int legs) {//录入值
        if (legs < 0) {
            System.out.println("输入有误");
        } else {

            this.legs = legs;
        }
    }

    public int getLegs() {//获取值
        return legs;
    }
}

